<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>&#x865a;&#x62df;&#x673a;&#x7f51;&#x7edc;&#x9002;&#x914d;&#x5668;</title>
  <style>
    /* From extension vscode.github */
    /*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

    .vscode-dark img[src$=\#gh-light-mode-only],
    .vscode-light img[src$=\#gh-dark-mode-only],
    .vscode-high-contrast:not(.vscode-high-contrast-light) img[src$=\#gh-light-mode-only],
    .vscode-high-contrast-light img[src$=\#gh-dark-mode-only] {
      display: none;
    }
  </style>

  <link rel="stylesheet"
    href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css">
  <link rel="stylesheet"
    href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css">
  <style>
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', system-ui, 'Ubuntu', 'Droid Sans', sans-serif;
      font-size: 14px;
      line-height: 1.6;
    }
  </style>
  <style>
    .task-list-item {
      list-style-type: none;
    }

    .task-list-item-checkbox {
      margin-left: -20px;
      vertical-align: middle;
      pointer-events: none;
    }
  </style>
  <style>
    :root {
      --color-note: #0969da;
      --color-tip: #1a7f37;
      --color-warning: #9a6700;
      --color-severe: #bc4c00;
      --color-caution: #d1242f;
      --color-important: #8250df;
    }
  </style>
  <style>
    @media (prefers-color-scheme: dark) {
      :root {
        --color-note: #2f81f7;
        --color-tip: #3fb950;
        --color-warning: #d29922;
        --color-severe: #db6d28;
        --color-caution: #f85149;
        --color-important: #a371f7;
      }
    }
  </style>
  <style>
    .markdown-alert {
      padding: 0.5rem 1rem;
      margin-bottom: 16px;
      color: inherit;
      border-left: .25em solid #888;
    }

    .markdown-alert>:first-child {
      margin-top: 0
    }

    .markdown-alert>:last-child {
      margin-bottom: 0
    }

    .markdown-alert .markdown-alert-title {
      display: flex;
      font-weight: 500;
      align-items: center;
      line-height: 1
    }

    .markdown-alert .markdown-alert-title .octicon {
      margin-right: 0.5rem;
      display: inline-block;
      overflow: visible !important;
      vertical-align: text-bottom;
      fill: currentColor;
    }

    .markdown-alert.markdown-alert-note {
      border-left-color: var(--color-note);
    }

    .markdown-alert.markdown-alert-note .markdown-alert-title {
      color: var(--color-note);
    }

    .markdown-alert.markdown-alert-important {
      border-left-color: var(--color-important);
    }

    .markdown-alert.markdown-alert-important .markdown-alert-title {
      color: var(--color-important);
    }

    .markdown-alert.markdown-alert-warning {
      border-left-color: var(--color-warning);
    }

    .markdown-alert.markdown-alert-warning .markdown-alert-title {
      color: var(--color-warning);
    }

    .markdown-alert.markdown-alert-tip {
      border-left-color: var(--color-tip);
    }

    .markdown-alert.markdown-alert-tip .markdown-alert-title {
      color: var(--color-tip);
    }

    .markdown-alert.markdown-alert-caution {
      border-left-color: var(--color-caution);
    }

    .markdown-alert.markdown-alert-caution .markdown-alert-title {
      color: var(--color-caution);
    }
  </style>

</head>

<body class="vscode-body vscode-light">
  <h1 id="虚拟机网络适配器">虚拟机网络适配器</h1>
  <h2 id="虚拟机网络适配器的模式">虚拟机网络适配器的模式</h2>
  <h3 id="桥接模式bridged-mode">桥接模式（Bridged Mode）</h3>
  <ul>
    <li>
      <p>原理</p>
      <p>在桥接模式下，虚拟机的网络适配器就像一台真实的物理机一样，直接连接到宿主机所在的物理网络中，它会从网络中的 DHCP 服务器获取一个独立的 IP 地址，与宿主机处于同一网段，就如同网络中多了一台新的设备。</p>
    </li>
    <li>
      <p>特点</p>
      <p>网络功能完整：虚拟机可以与网络中的其他设备直接通信，包括访问互联网、与局域网内的其他计算机共享文件等，功能和真实物理机几乎没有区别。</p>
      <p>配置相对简单：只需在虚拟机软件中选择桥接模式，通常不需要额外复杂的网络配置，虚拟机就可以自动获取网络参数。</p>
      <p>可被其他设备访问：由于虚拟机有独立的 IP 地址，网络中的其他设备可以直接访问虚拟机，这对于需要提供网络服务的虚拟机，如搭建 Web 服务器、FTP 服务器等非常方便。</p>
    </li>
    <li>
      <p>适用场景</p>
      <p>适用于需要让虚拟机完全融入现有网络环境，与其他物理机平等地进行网络通信的场景，比如在虚拟机中搭建企业级应用服务器，需要与局域网内的其他办公电脑进行数据交互等情况。</p>
    </li>
  </ul>
  <h3 id="nat-模式network-address-translation-mode">NAT 模式（Network Address Translation Mode）</h3>
  <ul>
    <li>
      <p>原理</p>
      <p>NAT 模式下，虚拟机通过宿主机作为网关来访问外部网络。虚拟机使用的是私有 IP 地址，当虚拟机发送网络请求时，宿主机的 NAT 服务会将虚拟机的私有 IP 地址转换为宿主机的公网 IP
        地址，使虚拟机能够访问外部网络，而外部网络中的设备无法直接访问虚拟机，除非在宿主机上进行端口映射等特殊配置。</p>
    </li>
    <li>
      <p>特点</p>
      <p>共享网络连接：多个虚拟机可以共享宿主机的网络连接，节省公网 IP 资源。</p>
      <p>网络隔离性较好：外部网络无法直接访问虚拟机，提高了虚拟机的安全性，适合在一个局域网内有多台虚拟机，且不需要外部网络直接访问虚拟机的场景。</p>
      <p>方便进行网络访问控制：可以在宿主机上方便地对虚拟机的网络访问进行控制和管理，如限制虚拟机的访问权限、进行流量控制等。</p>
    </li>
    <li>
      <p>适用场景
        适用于大多数个人用户在本地计算机上运行虚拟机，主要目的是让虚拟机能够访问互联网，进行软件测试、学习等操作，同时又不希望外部网络直接访问虚拟机的情况。比如个人在虚拟机中安装不同的操作系统来测试软件兼容性，虚拟机只需要能够连接到互联网下载和安装软件即可。
      </p>
    </li>
  </ul>
  <h3 id="仅主机模式host-only-mode">仅主机模式（Host-Only Mode）</h3>
  <ul>
    <li>
      <p>原理
        仅主机模式下，虚拟机只能与宿主机进行通信，不能访问外部网络。虚拟机和宿主机之间会建立一个专用的虚拟网络，它们在这个虚拟网络中可以相互通信，就像在一个独立的小型局域网中，但是这个局域网与外部网络是隔离的。</p>
    </li>
    <li>
      <p>特点
        网络独立性强：创建了一个相对独立、封闭的网络环境，不受外部网络的干扰，适合进行一些需要高度隔离的网络实验或开发工作。</p>
      <p>便于本地通信：方便虚拟机与宿主机之间进行文件传输、数据共享等操作，在开发和测试过程中，如果只需要在本地进行数据交互和调试，仅主机模式可以提供一个简单、安全的环境。</p>
      <p>安全性高：由于与外部网络隔离，大大降低了虚拟机受到外部网络攻击的风险，适合对安全性要求较高的场景，如在虚拟机中进行敏感数据的处理或安全测试等。</p>
    </li>
    <li>
      <p>适用场景</p>
      <p>适用于需要在本地进行网络应用开发、测试，且不希望与外部网络有任何交互的场景，比如开发一个只在本地局域网内运行的小型网络应用程序，只需要在虚拟机和宿主机之间进行通信和测试即可。</p>
    </li>
  </ul>
  <h2 id="虚拟网卡">虚拟网卡</h2>
  <p>使用<code>ip addr</code>或者<code>ifconfig</code>命令可以查看网卡配置信息</p>
  <pre><code class="language-shell">[root@jinos-v1 ~]# ip addr show
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:3b:6c:ee brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.11/24 brd 172.16.1.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::55c6:dced:ce08:f9eb/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

</code></pre>
  <p>从上述信息中可以得知虚拟网卡<code>ens160</code>为启用状态，且其IPv4地址配置的是<code>172.16.1.11</code></p>
  <p>
    在Linux系统中，网络脚本用于配置和管理网络接口，通常位于<code>/etc/sysconfig/network-scripts/</code>目录下，存在虚拟网卡<code>ens160</code>的配置文件<code>ifcfg-ens160</code>：
  </p>
  <pre><code class="language-shell">TYPE=&quot;Ethernet&quot;
PROXY_METHOD=&quot;none&quot;
BROWSER_ONLY=&quot;no&quot;

BOOTPROTO=&quot;static&quot;

DEFROUTE=&quot;yes&quot;
IPV4_FAILURE_FATAL=&quot;no&quot;
IPV6INIT=&quot;yes&quot;
IPV6_AUTOCONF=&quot;yes&quot;
IPV6_DEFROUTE=&quot;yes&quot;
IPV6_FAILURE_FATAL=&quot;no&quot;
IPV6_ADDR_GEN_MODE=&quot;stable-privacy&quot;
NAME=&quot;ens160&quot;
UUID=&quot;6c70b8d0-fe9f-42cc-a502-4a9d7234a03b&quot;
DEVICE=&quot;ens160&quot;

ONBOOT=&quot;yes&quot;

IPADDR=172.16.1.11
GATEWAY=172.16.1.2
NETMASK=&quot;255.255.255.0&quot;
DNS1=&quot;8.8.8.8&quot;
DNS2=&quot;4.4.4.4&quot;
</code></pre>
  <ul>
    <li>
      <p>BOOTPROTO配置为&quot;static&quot;：表示使用手动分配IP
        然后手动指定IPADDR、GATEWAY、NETMASK、DNS信息</p>
    </li>
    <li>
      <p>ONBOOT配置为&quot;yes&quot;：表示开机自动启用</p>
    </li>
  </ul>
  <h2 id="配置虚拟机nat模式常见问题注意事项">配置虚拟机NAT模式常见问题注意事项</h2>
  <ul>
    <li>
      <p>仔细检查配置内容是否写错</p>
    </li>
    <li>
      <p>主机无法相互ping通虚拟机IP？</p>
      <p>检查虚拟机防火墙配置</p>
    </li>
    <li>
      <p>虚拟机无法相互ping通主机IP，也无法ping通外网？</p>
      <p>检查网络适配器是否正确</p>
    </li>
    <li>
      <p>虚拟机无法相互ping通主机IP，但可以ping通外网？</p>
      <p>检查主机防火墙配置 <img src="file:///f:\Code\scripthub\centos\网络适配器\image.png" alt="alt text"></p>
    </li>
    <li>
      <p>用C类地址时，主机默认NAT模式的虚拟网络VMnet8 配置的ipv4 尽量不要配置为<code>192.168.1.1</code>，避免与路由器冲突 导致路由器管理界面不可访问</p>
    </li>
  </ul>



</body>

</html>